package com.papercutting.platform.service;

import com.papercutting.platform.entity.News;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * 活动资讯服务接口
 */
public interface NewsService {
    
    /**
     * 保存资讯
     */
    News save(News news);
    
    /**
     * 根据ID查找资讯
     */
    News findById(Long id);
    
    /**
     * 查找所有资讯
     */
    List<News> findAll();
    
    /**
     * 分页查找资讯
     */
    Page<News> findAll(Pageable pageable);
    
    /**
     * 根据ID删除资讯
     */
    void deleteById(Long id);
    
    /**
     * 根据类型查找资讯
     */
    List<News> findByType(Integer type);
    
    /**
     * 根据推荐状态查找资讯
     */
    List<News> findByIsRecommend(Boolean isRecommend);
    
    /**
     * 根据置顶状态查找资讯
     */
    List<News> findByIsTop(Boolean isTop);
    
    /**
     * 根据状态查找资讯
     */
    List<News> findByStatus(Integer status);
    
    /**
     * 根据标题模糊查找资讯
     */
    List<News> findByTitleContaining(String title);
    
    /**
     * 增加资讯浏览量
     */
    void increaseViewCount(Long id);
    
    /**
     * 分页查询资讯列表
     */
    Page<News> findNewsList(Integer type, String keyword, Integer status, Pageable pageable);
}